package leetcode_core.leetcode_4;

/**
 * 902
 *
 * @author: 张庭杰
 * @date: 2022年10月18日 13:23
 */
public class AtMostNGivenDigitSet {
    public int atMostNGivenDigitSet(String[] digits, int n) {
        char[] ns = String.valueOf(n).toCharArray();
        int nLen = ns.length;
        int dLen = digits.length;
        //对于前0~n-2位数字,是不受影响的,直接直接pow
        int result = 0;
        for(int i = 1;i<nLen;i++){//1~n-1
            result += Math.pow(dLen,i);//对于digits中的数字,在前i位都可以任选
        }
        //然后讨论最后一位(0)
        for(int i = 0 ;i<nLen ;i++){
            char nsc = ns[i];
            //然后开始比较是否有相等的
            boolean cmp = false;
            for (String digit : digits) {
                char dc = digit.charAt(0);
                if(dc < nsc){//如果是小于的话,证明都能选,因此直接pow
                    result += Math.pow(dLen,n-1-i);
                }else if(dc == nsc){//如果是等于的话那么
                    cmp = true;
                    break;
                }
            }
            if(!cmp){
                //如果不需要继续比较
                return result;
            }
        }
        return result+1;
    }

}
